#include <bits/stdc++.h>

using namespace std;

const int maxn=10005;
typedef long long ll;

ll a[maxn];
int n;

inline bool Gauss(){
    int cnt;cnt=1;
    for(ll mask=1ll<<60;mask;mask>>=1){
        int i;
        for(i=cnt;i<=n;i++) if(mask&a[i]) break;
        if(i>n) continue;
        swap(a[cnt],a[i]);
        for(int i=1;i<=n;i++) if(i!=cnt&&(a[i]&mask)) a[i]^=a[cnt];
        cnt++;
    }
	int _n=n;
    n=cnt-1;
	if(cnt<=_n) return true;
    return false;
}

inline ll read(){
    char c;ll r;bool f=0;
    for(c=getchar();c>'9'||c<'0';c=getchar()) if(c=='-') f=1;
    for(r=0;c<='9'&&c>='0';c=getchar()) r=r*10+c-'0';
    if(f) return -r;
    else return r;
}

int main(){
    int T;

    T=read();
    for(int kase=1;kase<=T;kase++){
        bool flag;
        int q;
        n=read();
        for(int i=1;i<=n;i++) a[i]=read();
        flag=Gauss();
        //printf("--\n");for(int i=1;i<=n;i++) printf("%I64d\n",a[i]);printf("--\n");
        q=read();
        printf("Case #%d:\n",kase);
        while(q--){
            ll k=read();
            ll ans=0;
            if(flag) k--;
            int i=n;
            //printf("k=%I64d,n=%d\n",k,n);
            for(;i>=1&&k;k>>=1,i--)
                if(k&1) ans^=a[i];
            if(i<1&&k) printf("-1\n");
            else printf("%I64d\n",ans);
        }
    }
    return 0;
}
